#include <string>
#include <vector>
#include <iostream>
#include <thread>
#include <chrono>
#include "TestCase.h"

TestCase::TestCase(std::string name, std::function<bool(const std::tuple<> &)> testFunc,
                   std::function<void(const std::tuple<> &, const bool &)> printFunc) : name(name), testFunc(testFunc), printFunc(printFunc) {}

bool TestCase::run()
{
    std::tuple<> args;
    std::cout << "Running test case: " << name << std::endl;
    auto result = testFunc(args);
    printFunc(args, result);
    std::cout << "Test case result: " << (result ? "PASS" : "FAIL") << std::endl;
    return result;
}
